In a typical data processing system, various peripheral devices are connected to a central processing unit or processor by means of an input/output (I/O) channel bus associated with the processor. Typical peripheral devices include keyboard/display units, printers, magnetic disk storage units, floppy disk units, communications line controllers and the like. In order to enable the processor to select and communicate with a particular peripheral device, each of the different devices is assigned a different device address. In order to communicate with a particular device, the processor places its device address on the channel bus, such address is recognized by the desired peripheral device and the appropriate circuitry in the device control unit is activated to enable messages and data to be passed from the processor to the peripheral device and vice versa.
Typically, a peripheral device is connected to the processor I/O bus by means of a control unit which is sometimes referred to as an I/O controller. Such control unit or controller may be physically located within the housing of the peripheral device or may be located as a separate physical unit. In either case, its purpose is to enable and control the movement of messages and data from the processor to the peripheral device and vice versa.
The customary way for establishing the device address of a peripheral device is by means of a plugboard mechanism or a jumper mechanism located in the device control unit. For an 8-bit device address, eight sets of plug connections or jumper connections are provided. The plugs or jumpers are then manually added at the appropriate ones of the eight positions to establish the desired 8-bit address code. The control unit compares this plugboard or jumper established address value with the device addresses sent out by the processor on the I/O bus to determine if it is the control unit with which the processor wishes to communicate.
The use of plugboard or jumper mechanisms for establishing the address of a peripheral device has various disadvantages. For one thing, the device address can only be changed by manually changing the plugs or jumpers. This is not a particularly convenient thing to do when it is desired to reconfigure the system to accommodate the attachment of additional or different peripheral devices to the system. It is also not a particularly convenient thing to do when a given peripheral device is removed from one system and connected to another system. In addition to the physical labor, there is also the undesired possibility that the jumper connections might be changed in an incorrect manner, thus causing errors and problems in the subsequent operation of the system. It would be desirable, therefore, to have an alternative solution which did not require the use of plugs or jumpers.
The use of plugboard or jumper mechanisms for establishing device addresses is not a flexible method. The device addresses cannot be dynamically changed during the operation of the data processing system. On the other hand, various desirable procedures and operations could be accomplished on the system if it were possible to program different device addresses into the peripheral devices at different points in time during the operation of the system. For example, certain diagnostic procedures could be performed more efficiently and with the use of less program code in the processor if the processor were able to tell the peripheral device to start using a different device address. In other words, various system economies and improvements could be realized if the processor were capable of reprogramming the device addresses at appropriate points in the operation of the system. This, of course, cannot be done where the device addresses are established by means of plugs or jumpers.
A further disadvantage of plugs and jumpers for device address assignment arises when the circuitry of the device control unit is fabricated on a single large scale integration (LSI) integrated circuit chip. In particular, the use of plugboard or jumper mechanisms increases the number of I/O pins required on the chip. This is because the plug or jumper connections must be located off of the chip in order to be accessible for purposes of initializing or changing same. Thus, these mechanisms must be located off of the chip but must nevertheless be connected to the circuitry on the chip, thus increasing the number of chip I/O connections. For the case of an 8-bit device address, for example, eight additional I/O contacts would be required on the integrated circuit chip. As is known, the finding of enough space on LSI chips for the needed chip I/O connections is frequently a considerable problem. Thus, it would be desirable to eliminate the use of plugboard or jumper mechanisms and to provide another way of establishing device addresses which would reduce the number of chip I/O connections needed for this purpose.